#ifndef VISUALIZATION_HPP
#define	VISUALIZATION_HPP

#include <math.h>

#define MIN_CYAN 90
#define MAX_CYAN 108 // 120
#define MIN_GREEN 48
#define MAX_GREEN 80 //70
#define MIN_PINK 2
#define MAX_PINK 8
#define MIN_ORANGE 9
#define MAX_ORANGE 12

#define CYAN__ 1
#define GREEN__ 2
#define ORANGE__ 3
#define PINK__ 4

#define WORK_CYAN
#define WORK_GREEN
//#define WORK_ORANGE
//#define WORK_PINK

#define NUM_MAX_BLOBS 30
#define CVCLOSE_ITR 3
#define CVCONTOUR_APPROX_LEVEL 2

#define PARALLEL

#define PIXEL
#ifndef PIXEL
#define METERS
#endif

#define NUM_MAX_ROBOTS 1 // maximo 6
#define DIST_THRESHOLD 0.008 //0.04 // 22500(pixels) // max distance among blob's centers (in m^2)
#define Z_EPUCK 0.056 // 0.10 // meters
#define DIST_PIXEL 30000

#define STATE_DIM 4
#define MEASURE_DIM 2
#define CONTROL_DIM 0

#define OPENCV_USE_CAMERA

typedef struct {
    int R, G, B;
} RGB__;

typedef struct {
    unsigned int min;
    unsigned int max;
    int typeColor;
    RGB__ rgb;
} ColorIntensity;

enum Color {
    cyan = CYAN__,
    green = GREEN__,
    orange = ORANGE__,
    pink = PINK__
};

typedef struct INFO_ROBOT {
    double x, y, theta;
    double pixelTheta1;
    double pixelTheta2;
    int pixelX1, pixelY1;
    int pixelX2, pixelY2;
    
    bool find, kalman;

    INFO_ROBOT() : x(-1), y(-1), theta(-1), find(false),
    kalman(false), pixelX1(-1), pixelY1(-1), pixelX2(-1), pixelY2(-1),pixelTheta1(-1),
    pixelTheta2(-1){

    }
} INFO_ROBOT;

#endif	/* VISUALIZATION_HPP */

